package com.wmh.baseservice.system.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;

/**
 * @author wmh generator
 * @since 2022-05-22
 */
@ApiModel(value="SysGoodsId对象", description="")
public class SysGoodsId implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "商品id")
    private Long goodsId;

    private Integer status;

    private String remark;

    private Date createTime;

    private Date updateTime;

    @ApiModelProperty(value = "版本号")
    @Version
    private Integer version;

    @ApiModelProperty(value = "分类id")
    private Long categoryId;

    @ApiModelProperty(value = "商品名称")
    private String name;

    @ApiModelProperty(value = "近30天")
    private String day;

    @ApiModelProperty(value = "是否天猫新品")
    @TableField("hasTm")
    private Integer hastm;

    @ApiModelProperty(value = "材质")
    private String material;

    @ApiModelProperty(value = "类目")
    private String type;

    @ApiModelProperty(value = "类目id")
    private Long typeId;

    @ApiModelProperty(value = "链接")
    private String link;

    @ApiModelProperty(value = "店铺")
    private String shop;

    @ApiModelProperty(value = "交易金额")
    private BigDecimal amount;

    @ApiModelProperty(value = "访客人数")
    private Integer visitors;

    @ApiModelProperty(value = "搜索人数")
    private Integer search;

    @ApiModelProperty(value = "收藏人数")
    private Integer collection;

    @ApiModelProperty(value = "加购人数")
    private Integer purchased;

    @ApiModelProperty(value = "转化率1:100")
    private Float conversionRate;

    @ApiModelProperty(value = "支付人数")
    private Integer payNumber;

    @ApiModelProperty(value = "客单价")
    private BigDecimal guestUnitPrice;

    @ApiModelProperty(value = "uv价值")
    private BigDecimal uvPrice;

    @ApiModelProperty(value = "搜索占比")
    private Float searchAccounted;

    @ApiModelProperty(value = "收藏率")
    private Float collectionRate;

    @ApiModelProperty(value = "加购率")
    private Float purchaseRate;

    @ApiModelProperty(value = "开始时间")
    private Date startTime;

    @ApiModelProperty(value = "结束时间")
    private Date endTime;

    @ApiModelProperty(value = "1竞品 -1非竞品")
    private Integer hasCompetition;

    public Long getId() {
        return id;
    }

    public SysGoodsId setId(Long id) {
        this.id = id;
        return this;
    }
    public Long getGoodsId() {
        return goodsId;
    }

    public SysGoodsId setGoodsId(Long goodsId) {
        this.goodsId = goodsId;
        return this;
    }
    public Integer getStatus() {
        return status;
    }

    public SysGoodsId setStatus(Integer status) {
        this.status = status;
        return this;
    }
    public String getRemark() {
        return remark;
    }

    public SysGoodsId setRemark(String remark) {
        this.remark = remark;
        return this;
    }
    public Date getCreateTime() {
        return createTime;
    }

    public SysGoodsId setCreateTime(Date createTime) {
        this.createTime = createTime;
        return this;
    }
    public Date getUpdateTime() {
        return updateTime;
    }

    public SysGoodsId setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
        return this;
    }
    public Integer getVersion() {
        return version;
    }

    public SysGoodsId setVersion(Integer version) {
        this.version = version;
        return this;
    }
    public Long getCategoryId() {
        return categoryId;
    }

    public SysGoodsId setCategoryId(Long categoryId) {
        this.categoryId = categoryId;
        return this;
    }
    public String getName() {
        return name;
    }

    public SysGoodsId setName(String name) {
        this.name = name;
        return this;
    }
    public String getDay() {
        return day;
    }

    public SysGoodsId setDay(String day) {
        this.day = day;
        return this;
    }
    public Integer getHastm() {
        return hastm;
    }

    public SysGoodsId setHastm(Integer hastm) {
        this.hastm = hastm;
        return this;
    }
    public String getMaterial() {
        return material;
    }

    public SysGoodsId setMaterial(String material) {
        this.material = material;
        return this;
    }
    public String getType() {
        return type;
    }

    public SysGoodsId setType(String type) {
        this.type = type;
        return this;
    }
    public Long getTypeId() {
        return typeId;
    }

    public SysGoodsId setTypeId(Long typeId) {
        this.typeId = typeId;
        return this;
    }
    public String getLink() {
        return link;
    }

    public SysGoodsId setLink(String link) {
        this.link = link;
        return this;
    }
    public String getShop() {
        return shop;
    }

    public SysGoodsId setShop(String shop) {
        this.shop = shop;
        return this;
    }
    public BigDecimal getAmount() {
        return amount;
    }

    public SysGoodsId setAmount(BigDecimal amount) {
        this.amount = amount;
        return this;
    }
    public Integer getVisitors() {
        return visitors;
    }

    public SysGoodsId setVisitors(Integer visitors) {
        this.visitors = visitors;
        return this;
    }
    public Integer getSearch() {
        return search;
    }

    public SysGoodsId setSearch(Integer search) {
        this.search = search;
        return this;
    }
    public Integer getCollection() {
        return collection;
    }

    public SysGoodsId setCollection(Integer collection) {
        this.collection = collection;
        return this;
    }
    public Integer getPurchased() {
        return purchased;
    }

    public SysGoodsId setPurchased(Integer purchased) {
        this.purchased = purchased;
        return this;
    }
    public Float getConversionRate() {
        return conversionRate;
    }

    public SysGoodsId setConversionRate(Float conversionRate) {
        this.conversionRate = conversionRate;
        return this;
    }
    public Integer getPayNumber() {
        return payNumber;
    }

    public SysGoodsId setPayNumber(Integer payNumber) {
        this.payNumber = payNumber;
        return this;
    }
    public BigDecimal getGuestUnitPrice() {
        return guestUnitPrice;
    }

    public SysGoodsId setGuestUnitPrice(BigDecimal guestUnitPrice) {
        this.guestUnitPrice = guestUnitPrice;
        return this;
    }
    public BigDecimal getUvPrice() {
        return uvPrice;
    }

    public SysGoodsId setUvPrice(BigDecimal uvPrice) {
        this.uvPrice = uvPrice;
        return this;
    }
    public Float getSearchAccounted() {
        return searchAccounted;
    }

    public SysGoodsId setSearchAccounted(Float searchAccounted) {
        this.searchAccounted = searchAccounted;
        return this;
    }
    public Float getCollectionRate() {
        return collectionRate;
    }

    public SysGoodsId setCollectionRate(Float collectionRate) {
        this.collectionRate = collectionRate;
        return this;
    }
    public Float getPurchaseRate() {
        return purchaseRate;
    }

    public SysGoodsId setPurchaseRate(Float purchaseRate) {
        this.purchaseRate = purchaseRate;
        return this;
    }
    public Date getStartTime() {
        return startTime;
    }

    public SysGoodsId setStartTime(Date startTime) {
        this.startTime = startTime;
        return this;
    }
    public Date getEndTime() {
        return endTime;
    }

    public SysGoodsId setEndTime(Date endTime) {
        this.endTime = endTime;
        return this;
    }
    public Integer getHasCompetition() {
        return hasCompetition;
    }

    public SysGoodsId setHasCompetition(Integer hasCompetition) {
        this.hasCompetition = hasCompetition;
        return this;
    }

    public static final String ID = "id";

    public static final String GOODS_ID = "goods_id";

    public static final String STATUS = "status";

    public static final String REMARK = "remark";

    public static final String CREATE_TIME = "create_time";

    public static final String UPDATE_TIME = "update_time";

    public static final String VERSION = "version";

    public static final String CATEGORY_ID = "category_id";

    public static final String NAME = "name";

    public static final String DAY = "day";

    public static final String HASTM = "hasTm";

    public static final String MATERIAL = "material";

    public static final String TYPE = "type";

    public static final String TYPE_ID = "type_id";

    public static final String LINK = "link";

    public static final String SHOP = "shop";

    public static final String AMOUNT = "amount";

    public static final String VISITORS = "visitors";

    public static final String SEARCH = "search";

    public static final String COLLECTION = "collection";

    public static final String PURCHASED = "purchased";

    public static final String CONVERSION_RATE = "conversion_rate";

    public static final String PAY_NUMBER = "pay_number";

    public static final String GUEST_UNIT_PRICE = "guest_unit_price";

    public static final String UV_PRICE = "uv_price";

    public static final String SEARCH_ACCOUNTED = "search_accounted";

    public static final String COLLECTION_RATE = "collection_rate";

    public static final String PURCHASE_RATE = "purchase_rate";

    public static final String START_TIME = "start_time";

    public static final String END_TIME = "end_time";

    public static final String HAS_COMPETITION = "has_competition";

    @Override
    public String toString() {
        return "SysGoodsId{" +
            "id=" + id +
            ", goodsId=" + goodsId +
            ", status=" + status +
            ", remark=" + remark +
            ", createTime=" + createTime +
            ", updateTime=" + updateTime +
            ", version=" + version +
            ", categoryId=" + categoryId +
            ", name=" + name +
            ", day=" + day +
            ", hastm=" + hastm +
            ", material=" + material +
            ", type=" + type +
            ", typeId=" + typeId +
            ", link=" + link +
            ", shop=" + shop +
            ", amount=" + amount +
            ", visitors=" + visitors +
            ", search=" + search +
            ", collection=" + collection +
            ", purchased=" + purchased +
            ", conversionRate=" + conversionRate +
            ", payNumber=" + payNumber +
            ", guestUnitPrice=" + guestUnitPrice +
            ", uvPrice=" + uvPrice +
            ", searchAccounted=" + searchAccounted +
            ", collectionRate=" + collectionRate +
            ", purchaseRate=" + purchaseRate +
            ", startTime=" + startTime +
            ", endTime=" + endTime +
            ", hasCompetition=" + hasCompetition +
        "}";
    }

    public final static String[] getFields(String ...noField){
        List<String> list = new ArrayList<>(Arrays.asList(
            SysGoodsId.ID
            ,SysGoodsId.GOODS_ID
            ,SysGoodsId.STATUS
            ,SysGoodsId.REMARK
            ,SysGoodsId.CREATE_TIME
            ,SysGoodsId.UPDATE_TIME
            ,SysGoodsId.VERSION
            ,SysGoodsId.CATEGORY_ID
            ,SysGoodsId.NAME
            ,SysGoodsId.DAY
            ,SysGoodsId.HASTM
            ,SysGoodsId.MATERIAL
            ,SysGoodsId.TYPE
            ,SysGoodsId.TYPE_ID
            ,SysGoodsId.LINK
            ,SysGoodsId.SHOP
            ,SysGoodsId.AMOUNT
            ,SysGoodsId.VISITORS
            ,SysGoodsId.SEARCH
            ,SysGoodsId.COLLECTION
            ,SysGoodsId.PURCHASED
            ,SysGoodsId.CONVERSION_RATE
            ,SysGoodsId.PAY_NUMBER
            ,SysGoodsId.GUEST_UNIT_PRICE
            ,SysGoodsId.UV_PRICE
            ,SysGoodsId.SEARCH_ACCOUNTED
            ,SysGoodsId.COLLECTION_RATE
            ,SysGoodsId.PURCHASE_RATE
            ,SysGoodsId.START_TIME
            ,SysGoodsId.END_TIME
            ,SysGoodsId.HAS_COMPETITION
        ));
        list.removeAll(new ArrayList<>(Arrays.asList(noField)));
        return list.toArray(new String[0]);
    }
}